/**
 * <pre>
 * Title: 		MessageService.java
 * Project: 	MSBS
 * Author:		pengfangliang
 * Create:	 	2012-7-6 上午09:49:25
 * Copyright: 	Copyright (c) 2012
 * Company:		Shenzhen Helper
 * <pre>
 */
package com.hengpeng.itfin.service;

import java.util.Date;
import java.util.Map;

import com.hengpeng.itfinbase.message.ResponseMessage;
import com.hengpeng.itfinbase.message.userInfo.MessageRequest;
import com.hengpeng.itfinbase.persist.UserInfo;

/**
 * <pre>
 * 站内消息服务层接口
 * </pre>
 * 
 * @author pengfangliang
 * @version 1.0, 2012-7-6
 */
public interface MessageService {
    /**
     * <pre>
     * 批量标记站内消息为已读
     * </pre>
     * 
     * @param request
     *            请求
     * @return
     */
    ResponseMessage batchMarkMessageReaded(MessageRequest request);

    /**
     * <pre>
     * 批量删除站内消息
     * </pre>
     * 
     * @param request
     * @return
     */
    ResponseMessage batchDeleteMessage(MessageRequest request);

    /**
     * <pre>
     *  发送站内信 (登录时发送   后台人工发送)
     * </pre>
     * 
     * @param userName
     * @param member
     */
    void sendMessge(UserInfo user);

    /**
     * <pre>
     *  系统发送站内信 (时时发送  中奖、修改密码、提现等)
     * </pre>
     * 
     * @param userName
     *            用户名
     * @param title
     *            标题
     * @param content
     *            内容
     */
    void sendSystemMessage(String userName, String title, String content);

    /**
     * <pre>
     * 发送提现成功通知
     * </pre>
     * 
     * @param storeId
     *            会员店编号
     * @param betCardNo
     *            投注卡号
     * @param accountNo
     *            银行卡号
     * @param lastTime
     *            成功时间
     * @param drawMoney
     *            提现金额
     */
    void sendDrawMessage(String userName, String accountNo, Date lastTime, Integer drawMoney);

    String sendSystemMessageByType(String userName, String busiType, Map<String, ?> map);

    String sendSystemMessageByTypeWithUsrCustId(String usrCustId, String busiType, Map<String, ?> map);

    void sendMessage(String userName, String title, String content);

    /**
     * 根据usrCustId异步发送站内信
     */
    void asynsendSystemMessageByTypeWithUsrCustId(String usrCustId, String busiType, Map<String, ?> map);

    /**
     * 根据userName异步发送站内信
     * @param usrCustId
     * @param busiType
     * @param map
     */
    void asynsendSystemMessageByTypeWithUserName(String usrCustId, String busiType, Map<String, ?> map);
}
